<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 
        2. 数组去重
        有一个数组 var arr = [ 1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 3, 2]  去除数组中的重复项=> [1,2,3]
    
    */

    // 删除去重  
    // 问题: 由于数组塌陷的元素,前面的元素被删除之后,后面的元素会批量向前移动占据被删除的元素的位置 => 存在漏网之鱼
    /* var arr = [1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 3, 2];
    var arr = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
    // index   0  1  2  3  4
    for (var i = 0; i < arr.length; i++) {
        // list[i]  => 每轮循环取的值
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                arr.splice(j, 1);
            }
        }
    }

    console.log(arr); */

    // 解决方案1:  比较时倒着比
    // var arr = [1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 3, 2];
    // // var arr = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
    // // index   0  1  2  3  4
    // for (var i = 0; i < arr.length; i++) {
    //     // list[i]  => 每轮循环取的值
    //     for (var j = arr.length - 1; j >= i + 1; j--) {
    //         if (arr[i] === arr[j]) {
    //             arr.splice(j, 1);
    //         }
    //     }
    // }
    // console.log(arr);


    // 解决方法2: 
    //  由于数组塌陷的元素,前面的元素被删除之后,后面的元素会批量向前移动占据被删除的元素的位置 => 删除之后,当前位置再次比较一遍 
    // var arr = [1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 3, 2];
    // // var arr = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
    // // index   0  1  2  3  4
    // for (var i = 0; i < arr.length; i++) {
    //     // list[i]  => 每轮循环取的值
    //     for (var j = i + 1; j < arr.length; j++) {
    //         if (arr[i] === arr[j]) {
    //             arr.splice(j, 1);
    //             i--;
    //         }
    //     }
    // }
    // console.log(arr);


    // 方法3: 
    // 新建数组去重

    var arr = [1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 3, 2];
    var list = [];

    for(var i = 0;i<arr.length;i++){
        var item = arr[i];

        // list.includes(item) == false
        // !list.includes(item) == true  => list.includes(item) == false
        if(!list.includes(item)){
            list.push(item);
        }
    }
    console.log(list);




</script>

</html>